草庐IT

CountDownLatch和ExecutorService 线程池cachedThreadPool.submit

全部标签

java - 计算线程池中可用于提高性能的最大线程数

最近我接受了一次面试,面试官问我可以分配给线程池的最大线程数是多少。我回答他这将取决于硬件组合。我也可以通过增加线程池中的线程来手动测试执行。他似乎对此并不满意。任何人都可以告诉我们如何决定我们应该使用多少线程以获得更好的性能。任何指南链接将不胜感激(在核心Java应用程序中) 最佳答案 谁能告诉我们如何决定我们应该使用多少线程以获得更好的性能-这绝对不是最大线程数。为了获得最佳性能,线程数量应等于处理器核心数(不要忘记使用-XmsYYYYM和-XmxYYYYMstrong>,如果没有它们,您可能会遇到处理器未将线程分配给内核的情况

java - 忽略事件分派(dispatch)线程如何让这个程序工作?

当我试图看看我是否能回答thisquestionearliertoday.我意识到我不完全理解EventDispatchThread(美国东部时间)。Googling双方都确认并帮助了这一点并澄清了whyIdon't.(This也可能与理解有关。)该代码设置了一个GUI,随后(如前面的问题)更新了一个文本字段,直到取消设置标志。我有几个问题/请求。如果两个调用(对swingInit和doIt)都在invokeLater之外,请解释为什么下面的代码运行正常block(如图所示),因为这两个调用都会影响或查询GUI,但都不会在EDT上执行(是吗?)。那不是招来失败吗?如果调用swingIn

java - 最高效但线程安全的列表/集合

Java有大量不同的Collections是为并发和线程安全而设计的,我不知道该选择哪一个来满足我的情况。多个线程可能正在调用.add()和.remove(),我会经常用ListnewList=newArrayList(concurrentList)之类的东西复制这个列表.我永远不会遍历并发列表。我想到了类似CopyOnWriteArrayList的事情,但我读到它可能非常低效,因为它每次修改时都会复制自己。我希望在安全和效率之间找到一个好的折衷方案。这种情况的最佳列表(或集合)是什么? 最佳答案 正如@SpiderPig所说,Li

java - Hazelcast 线程阻止 TomEE 停止

上下文我们想使用Hazelcast作为我们在TomEE中的JCache实现。由于我们不需要疯狂的性能,目前,我们希望将Hazelcast节点作为我们应用程序的一部分运行。我们使用Hazelcast3.7和TomEE7.0.1。问题当停止TomEE时,它会提示警告-Web应用程序[APPLICATION_NAME]似乎已经启动了一个名为[SOMENAME]的线程,但未能停止它。这很可能会造成内存泄漏。几次,VM将不会正常停止,而是继续运行。解决方法显然是在进程看起来空闲时立即终止进程。不用说,这让我们的开发人员和开发运营人员发疯了。单独的Hazelcast节点为了排除在TomEE中运行的

开源C语言库Melon:多线程治理

问题描述不知你是否有过类似如下的需求:有一些功能,它们足够单一,但又需要后台持续运行,以容器实现感觉太重了,以进程实现又太琐碎了,以线程实现可以接受但是又不好管理。这类程序诸如:数据采集程序、可观测性程序、中间件、代理等等。这一需求乍看之下倒是有点类似supervisor在做的事情,每个功能一个单一后台进程。诚然进程是一个选择,但是实际使用中则会面临是大量的可执行程序和因人而异的开发风格。当然,选择多线程还有另一个重要原因,这里先卖个关子,我们往下看。解决方案因此,笔者将介绍一个开源C语言库——Melon。它实现了一套多线程框架。在这套框架之下,每一个线程是一个独立的功能模块,并且可以接受来自

java.lang.NoClassDefFoundError : Could not initialize class when launching spark job via spark-submit in scala code 错误

我有一个代码,如下所示objectErrorTest{caseclassAPIResults(status:String,col_1:Long,col_2:Double,...)deffuncA(rows:ArrayBuffer[Row])(implicitdefaultFormats:DefaultFormats):ArrayBuffer[APIResults]={//callsomeAPIanggetresultsandreturnAPIResults...}//MARK:loadpropertiesvalprops=loadProperties()privatedefloadPr

java - 在多个线程中洗牌数组

我有一个大小为N的数组。我想在2个(或更多)线程中打乱它的元素。每个线程都应该使用它自己的数组部分。比方说,第一个线程将元素从0打乱到K,第二个线程将元素从K打乱到N(其中0//try-catchstuffisommitedstaticvoidshuffle(int[]array){Threadt1=newShufflingThread(array,0,array.length/2);Threadt2=newShufflingThread(array,array.length/2,array.length);t1.start();t2.start();t1.join();t2.join

java - Java 垃圾收集器会停止我从 JNI 调用创建的 POSIX 线程吗?

我有一个时间紧迫的应用程序,需要按设定的时间表发送UDP数据报。接收端对抖动的容忍度非常低。用javaScheduledThreadPoolExecutor实现它是不够的,因为当GC执行“停止世界”收集时,我的线程暂停,而GC执行它的工作。我想在Java中实现业务逻辑,同时在C++中使用POSIX线程实现时间关键部分(顺便说一句,native环境是Linux)。这将使我们能够节省数千行用Java编写的代码,并从native系统调用中获得我们需要的节奏。我的问题是:如果我调用创建单独POSIX线程的JNI函数,当JavaGC执行“停止世界”收集时,该线程是否会“暂停”?经验丰富的JNI大

java - 多线程循环赛

我正在尝试测试8种不同的游戏算法。这些算法可以相互对抗遵循游戏界面的不同类型的游戏。所以,他们必须对战100场比赛。我已经完成了那部分并且工作正常。现在,我正在尝试使其成为多线程,以利用friend计算机的8核。我使用线程的经验很少。那么,为了使我的代码成为多线程,我必须进行哪些更改?这是我的单线程版本的代码。编辑:我想到的解决方案(根据我的基本知识)是制作一个Match类,它需要两个玩家和他们想玩的游戏。该类将实现Runnable,我可以为每个游戏创建一个线程。我现在的问题是,一旦run()方法完成,我将如何通知结果?谢谢for(intp1=0;p1 最佳

java - 即使在 Websphere 中应用程序已停止后,线程仍会继续运行

我有一个长时间运行的线程,它是使用org.springframework.scheduling.commonj.WorkManagerTaskExecutor创建的使用Spring并在WebsphereApplicationServer8中运行。问题是即使应用程序已停止,该线程仍继续运行。该线程也需要停止,但它没有发生。我什至尝试使用Thread.currentThread().isInterrupted()来检查当前线程是否被中断,但它总是返回false。因此无法通过我的代码知道线程应该继续运行还是停止。这是我对WorkManagerTaskExecutor的spring配置:线程是